package br.com.arg.aplica.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

import br.com.arg.aplica.util.Obrigatorio;
import br.com.arg.aplica.util.TipoCampo;

@Entity
@XmlRootElement
//@Table(name="CAMPO", uniqueConstraints = @UniqueConstraint(columnNames = {"formato", "nome"}))
public class Campo implements Serializable {
	/** Default value included to remove warning. Remove or modify at will. **/
	private static final long serialVersionUID = 1L;
	
	public Campo()
	{
		this.nome = "Nome";
		this.descricao = "Descrição do compo Nome";
		this.tamanho = 12;
		this.tipoCampo = TipoCampo.AlfaNumerico;
	}
	
	@Id
	@NotNull
	@GeneratedValue
	private int id;

	@NotNull
	@Obrigatorio(min = "1", max = "32")	
	private String nome;

	@NotNull
	@Obrigatorio(min = "1", max = "255")	
	private String descricao;

	@NotNull
	@Obrigatorio(min = "1")	
	private int tamanho;

	@Enumerated
	@NotNull
	private TipoCampo tipoCampo;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getTamanho() {
		return tamanho;
	}

	public void setTamanho(int tamanho) {
		this.tamanho = tamanho;
	}

	public TipoCampo getTipoCampo() {
		return tipoCampo;
	}

	public void setTipoCampo(TipoCampo tipoCampo) {
		this.tipoCampo = tipoCampo;
	}	
}
